﻿/**
 * 基于 CkEditor 的 Html 编辑器。
 */
Ext.define('Happy.form.field.CkEditor', {
    extend: 'Ext.form.field.Base',
    alias: 'widget.happy-ckeditor',

    /**
     * @cfg 重写 ExtJs。
     */
    inputType: 'textarea',

    /**
     * 重写 ExtJs。
     * 
     * @protected
     */
    onRender: function () {
        var me = this;

        me.callParent(arguments);

        me.configHtmlEditor();
    },

    /**
     * 配置 Html 编辑器。
     * 
     * @protected
     */
    configHtmlEditor: function () {
        var me = this;

        CKEDITOR.replace(me.getInputId(), {
            height: me.getHeight(),
            readOnly: me.readOnly || me.disabled
        });

        me.getEditor().setData(me.getValue());
        me.getEditor().on('key', function () {
            me.setValue(me.getEditor().getData());
        });
    },

    /**
     * 返回 CkEditor 的实例。
     * 
     * @private
     * @return {CKEDITOR}
     */
    getHtmlEditor: function () {
        var me = this;

        return CKEDITOR.instances[me.getInputId()];
    },

    /**
     * 重写 ExtJs。
     */
    setReadOnly: function (readOnly) {
        var me = this;

        me.callParent(arguments);

        me.getHtmlEditor().setReadOnly(readOnly);
    },

    /**
     * 重写 ExtJs。
     */
    disable: function () {
        var me = this;

        me.callParent(arguments);

        if (me.getHtmlEditor()) {
            me.getHtmlEditor().setReadOnly(true);
        }

        return me;
    },

    /**
     * 重写 ExtJs。
     */
    enable: function () {
        var me = this;

        me.callParent(arguments);

        if (me.getHtmlEditor()) {
            me.getHtmlEditor().setReadOnly(false);
        }

        return me;
    }
});